/**************************************************************************//**
 * @item     CosyOS-III Kernel
 * @file     os_starter.c
 * @brief    任务启动器（Starter）
 * @author   迟凯峰
 * @version  V2.0.0
 * @date     2025.08.04
 ******************************************************************************/

#include "os_var.h"
#include "os_api.h"
#include "sv_com.h"
#include "sv_create.h"
#include "sv_task.h"
#include "ur_api.h"

/**
 \brief      任务启动器
 \param[in]  任务名称      Starter
 \param[in]  任务优先级    SYSCFG_TASKPRIORITY - (SYSCFG_DEBUGGING ? 3 : 1)
 \param[in]  任务栈大小    SYSCFG_STACKSIZE_STARTER
 \param[in]  安全运行时    0
 \param[in]  任务名称文本  遗产模式："Starter"，标准/兼容模式："任务启动器"
 \return     无
 */
#define _taskname "\xC8\xCE\xCE\xF1\xC6\xF4\xB6\xAF\xC6\xF7" /*!< "任务启动器" */
sCat2Str
(
	SYSCFG_STARTERCREATE,
	CreateTask(Starter, SYSCFG_TASKPRIORITY - (SYSCFG_DEBUGGING ? 3 : 1), SYSCFG_STACKSIZE_STARTER, 0, _taskname)
)
{
	void start_hook(void);
	#if (OS_TIMINTTOTAL > 0 || OS_TIMQRYTOTAL > 0)
	s_u8_t i;
	#if (OS_TIMINTTOTAL > 0)
	i = OS_TIMINTTOTAL;
	while(i--){
		if(s_timint_handle[i]->hookortask){
			sStartTask_TimInt(i);
		}
	}
	#endif
	#if (OS_TIMQRYTOTAL > 0)
	i = OS_TIMQRYTOTAL;
	while(i--){
		if(s_timqry_handle[i]->hookortask){
			sStartTask_TimQry(i);
		}
	}
	#endif
	#endif
	start_hook();
	uDeleteTasking();
}
#undef _taskname
